//
#include "mainwindow.h"
#include "ui_mainwindow.h"


#include <iostream>

#define _INF_ -1

using namespace std;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->ahp = new AHP();
    this->distancias=NULL;
    this->xml = new XMLInterpreter();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
void MainWindow::on_pushButton_6_clicked()
{
    this->ahp->clear();

    this->alternativasW = new setAlternativas();
    this->alternativasW->show();
    this->alternativasW->exec();

    this->alternativasW->getAlternativas(ahp);
    this->alternativasW->getCriterios(ahp);  //cargo lo que el usuario ingresó

    if(ahp->countAlternativas()>0){ //cargó alternativas y criterios TODO
        ui->pushButton_4->setEnabled(true);
        ui->pushButton_5->setEnabled(true);
        ui->pushButton->setEnabled(true);

        this->distancias=new float*[ahp->countAlternativas()];
        for(int i=0;i<ahp->countAlternativas();i++){
            this->distancias[i]=new float[ahp->countAlternativas()];
            for(int j=0;j<ahp->countAlternativas();j++){
                this->distancias[i][j]=_INF_; //incializar matriz de distancias absolutas entre alternativas con valor infinito
            }
        }
    } else { //ahp no está completo no se puede calcular nada
        ui->pushButton_4->setEnabled(false);
        ui->pushButton_5->setEnabled(false);
        ui->pushButton->setEnabled(false);
    }
}

void MainWindow::on_pushButton_4_clicked()  //CONFIGURAR DISTANCIAS
{
    this->distanciasW = new setDistancias(this,ahp->getAlternativas(),this->distancias);
    this->distanciasW->show();
    this->distanciasW->exec();
}

void MainWindow::on_pushButton_5_clicked()
{
    this->prioridadesW = new setPrioridades(this,this->ahp);
    this->prioridadesW->show();
    this->prioridadesW->exec();
}

void MainWindow::on_pushButton_clicked()
{
    this->calcularW = new Calcular(this,this->ahp,this->distancias);
    this->calcularW->show();
    this->calcularW->exec();
}



void MainWindow::on_actionAyudaAcerca_triggered()
{
    QMessageBox::about(this,"Acerca de...","Este software fue desarrollado por Cristian Lomagno y Javier Marsicano \
 como trabajo final de catedra Investigacion Operativa de la Facultad de Ciencias Exactas \
 U.N.C.P.B.A. cursada 2011. \n Para mas informacion contactese a: \n lomagno2003@hotmail.com \n jmarsican@gmail.com \n inv_op@exa.unicen.edu.ar");
}

void MainWindow::on_pushButton_2_clicked()
{
}

void MainWindow::on_pushButton_3_clicked()
{    
}

void MainWindow::on_actionAbrir_Proyecto_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Abrir","","*.proy");
    this->xml->setParams(this->ahp,this->distancias);
    this->xml->loadFile(fileName.toStdString());
    this->distancias=this->xml->getDistancias();

    if(ahp->countAlternativas()>0){ //cargó alternativas y criterios TODO
        ui->pushButton_4->setEnabled(true);
        ui->pushButton_5->setEnabled(true);
        ui->pushButton->setEnabled(true);
    } else {
        ui->pushButton_4->setEnabled(false);
        ui->pushButton_5->setEnabled(false);
        ui->pushButton->setEnabled(false);
    }
}

void MainWindow::on_actionGuardar_Proyecto_triggered()
{
    QString fileName = QFileDialog::getSaveFileName(this,"Guardar","","*.proy");
    this->xml->setParams(this->ahp,this->distancias);
    this->xml->saveFile(fileName.toStdString());
}

void MainWindow::on_actionSalir_triggered()
{
    this->close();
}
